The present invention relates in general to shared resource access arbitration and in particular to methods and systems for providing flexibility to match the needs of a plurality of agents or requesters, each attempting to use a shared and common resource, such as memory in a data processing system.
An arbiter controls the granting of access to a shared resource, such as memory or a communication bus, among a number of agents or requesters. In the case of a memory resource, such requesters could include central processing units (CPUs), screen refresh DMA (direct memory access) processor, 3D drawing block DMA processor, 2D drawing block DMA processor, USB Interface, Ethernet Interface, and so forth. Each of these units contend for the common resource, but the requirements of each agent or requestor may change in accordance with the type of data processing being accomplished at any given time.
Known current methods for performing the arbitration task typically use complicated and inflexible scheduling techniques or else use extremely simple schemes that do not adapt well to changing system load. Examples of such techniques are designated in the art as xe2x80x9cround robin,xe2x80x9d fixed priority, multilevel priority, requester priorities that change based on the previous winner of the arbitrated resource, and so forth. One complicated arbitration system has dynamically switched between different ones of some of the aforementioned arbitration schemes depending upon system requirements at a given time.
It would be desirable to have a simple arbitration scheme that provides inherent flexibility to changing system requirements for a given set of agents or resource requesters while still allowing the addition of further agents where necessary to perform newly assigned tasks.
The present invention comprises a list driven arbitration method that can operate in at least two modes. In a boot mode, a list is used comprising all possible requesters and the arbiter uses a simple technique, such as xe2x80x9cround robin,xe2x80x9d to allocate the shared resource during the system initialization process. After initialization, the different or second list used specifies specific agents that will be allowed to access the shared resource. This second list, which typically will designate fewer unique agents than the boot list, can be dynamically changed, both as to agents named and as to interpretation of the list to allow great flexibility in accordance with system load requirements.